编写CL程序之前,首先要了解平台以及设备的基本信息,才能少踩坑和实现更优的程序。例如当前平台支持的最大的CL版本是1.x还是2.x?当前设备支持最大计算单元是多少?这对后期编程十分重要。
构建openCL应用时,必须依赖某个平台,简单就是哪家的设备如AMD或Nvidia以及对应的SDK,设备就是CPU、GPU等计算设备。
clGetPlatformInfo用来获取opencl平台信息
参数名作用CL_PLATFORM_VERSION返回所能支持最大openCL版本CL_PLATFORM_PROFILE确认平台是支持完全版还是嵌入式版本的openCLCL_PLATFORM_EXTENSIONS返回平台所支持的扩展,每个openCL扩展都定义了一部分超出标准的内容,一旦该扩展被openCL工作组认可,则名字由cl_khr_开头
#include
#include
#include
#include
int main() {
cl_platform_id *platform;
cl_uint num_platform;
cl_int err;
err = clGetPlatformIDs(0, NULL, &num_platform);
platform = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platform);
err = clGetPlatformIDs(num_platform, platform, NULL);
for (int i = 0; i
cl_platform_id platform;
cl_device_id dev;
int err;
char *value;
size_t valueSize;
size_t maxWorkItemPerGroup;
cl_uint maxComputeUnits=0;
cl_ulong maxGlobalMemSize=0;
cl_ulong maxConstantBufferSize=0;
cl_ulong maxLocalMemSize=0;
/* Identify a platform */
err = clGetPlatformIDs(1, &platform, NULL);
if(err |